import request from "@/utils/request";

// 限制每一项的属性值的类型
export interface AttrValueItem {
    id?: number,  // 属性值的id
    valueName: string,  // 属性值的值
    attrId: number | undefined,   // 三级列表查询出来的 属性的id  后台自己添加的 和前台无关
    isEdit?: boolean  //新增一个属性,代表当前是编辑模式(添加属性值的时候 input标签) 还是查看模式(修改属性值的时候 span标签) 并且两种模式可以相互切换
}

// 限制整体的属性值的数组的类型
export type AttrValueListType = AttrValueItem[]

// 限制每一项的属性的类型
export interface AttrItemType {
    id?: number,
    attrName: string,
    categoryId: number,
    categoryLevel: number,
    attrValueList: AttrValueListType,
    selectData?: string   // 添加额外属性  收集 添加需要的 saleAttrId 和 saleAttrValueId
}

// 限制整体的属性值的数组的类型
export type AttrListType = AttrItemType[]

// 1- 根据3级分类请求当前分类的属性信息列表
export const reqAttrInfoListAsync = (
    category1Id: number,
    category2Id: number,
    category3Id: number
) => {
    return request.get<null, AttrListType>(
        `/admin/product/attrInfoList/${category1Id}/${category2Id}/${category3Id}`
    );
};

// 2- 添加/修改的请求
export const reqAddOrUpdateAttrInfoListAsync = (AttrInfo: AttrItemType) => {
    return request.post<null, null>(`/admin/product/saveAttrInfo`, AttrInfo);
};

// 3- 删除属性的请求
export const reqDeleteAttrAsync = (attrId: number) => {
    return request.delete<null, null>(`/admin/product/deleteAttr/${attrId}`);
};